package com.example.readerapp.myandserver.util;

//暂时不支持springboot框架
//import org.springframework.core.io.Resource;
//import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/**
 *idea工具栏点击”工具“选择”生成javaDoc“,在”其他命令行实参“中输入:-encoding utf-8 -charset utf-8,防止因为中文字符出错
 * springboot平台下相对路径(确保父目录均存在)：".\\src\\main\\resources\\static\\book\\dc.txt"
 * windows平台下绝对路径示例(确保父目录均存在)："C:\\Users\\ASUS\\Desktop\\12\\as.txt"
 * linux平台下绝对路径示例(确保父目录允许第三方读写操作)："/root/as.txt"
 * */
public class FileUtil
{
    //判断操作系统
    private static int a=System.getProperty("os.name").toUpperCase().indexOf("LINUX");
    private static int b=System.getProperty("os.name").toUpperCase().indexOf("WINDOWS");
    /**
     * @param textFilePath 向textFilePath指向的文件(可不存在此txt文件，但确保父目录存在)写入文本
     * @param string 要写的内容
     * @param append true表示在文件末尾添加新文本，false表示清空原文本后再添加文本
     * @return 写入是否成功
     * */
    public static boolean writerText(String textFilePath,String string,boolean append)
    {
        try
        {
            File file=new File(textFilePath);
            if(!file.exists())
            {
                file.createNewFile();
            }
            FileWriter fileWriter = new FileWriter(textFilePath,append);
            fileWriter.write(string);
            fileWriter.flush();
            fileWriter.close();
            return true;
        }
        catch (Exception e)
        {
            e.printStackTrace();
            System.err.println("写入文件失败");
        }
        return false;
    }
    /**
     * 删除一个文件夹下所有目录、文件以及文件夹本身
     * */
    public static void deleteFile(File file){

        //判断文件不为null或文件目录存在
        if (file == null || !file.exists()){
            System.out.println("文件删除失败,请检查文件路径是否正确");
            return;
        }
        //取得这个目录下的所有子文件对象
        File[] files = file.listFiles();
        //遍历该目录下的文件对象
        for (File f: files){
            //判断子目录是否存在子目录,如果是文件则删除
            if (f.isDirectory()){
                deleteFile(f);
            }else {
                if(!f.delete())
                {
                    System.out.println("删除失败："+f.getName());
                }
            }
        }
        //删除空文件夹  for循环已经把上一层节点的目录清空。
        file.delete();
    }

    /**
     * 获取目录下所有文件(按时间排序)
     *
     * @param path
     * @return
     */
    public static List<File> getFileSort(String path) {

        List<File> list = Arrays.asList(new File(path).listFiles());
        if (list != null && list.size() > 0) {

            Collections.sort(list, new Comparator<File>() {
                public int compare(File file, File newFile) {
                    if (file.lastModified() < newFile.lastModified()) {
                        return 1;
                    } else if (file.lastModified() == newFile.lastModified()) {
                        return 0;
                    } else {
                        return -1;
                    }

                }
            });

        }

        return list;
    }
}
